const blogModel = require("./model/blogModel");
const blogTypeModule = require("./model/blogTypeModule");

// 添加博客
module.exports.addBlogDao = async function (blogInfo) {
  const {dataValues} = await blogModel.create(blogInfo);
  return dataValues
}

// 根据分页信息查询博客
module.exports.findBlogByPageDao = async function (pageInfo) {
  if(pageInfo.catgoryid && pageInfo.catgoryid !== "-1") {
    // 根据分类信息查询
    return await blogModel.findAndCountAll({
      include: [
        {
          model: blogTypeModule,
          as: "blogtype",
          where: {
            id: pageInfo.catgoryid
          }
        }
      ],
      offset: (pageInfo.page * 1 - 1) * pageInfo.limit,
      limit: pageInfo.limit * 1
    })
  } else {
    // 根据分页查询
    return await blogModel.findAndCountAll({
      include: [
        {
          model: blogTypeModule,
          as: "blogtype"
        }
      ],
      offset: (pageInfo.page * 1 - 1) * pageInfo.limit,
      limit: pageInfo.limit * 1
    })
  }
}

// 根据id获取其中一篇文章
module.exports.findBlogByIdDao = async function (id) {
  return await blogModel.findByPk(id, {
    include: [
      {
        model: blogTypeModule,
        as: "blogtype"
      }
    ]
  })
}

// 修改一篇博文
module.exports.updateBlogDao = async function (id, newBlogInfo) {
  await blogModel.update(newBlogInfo, {
    where: {
      id,
    }
  });
  return await blogModel.findByPk(id);
}

// 删除一篇博文
module.exports.deleteBlogDao = async function (id) {
  return await blogModel.destroy({
    where: {
      id,
    }
  })
}

// 该方法根据博客类别的id，统计对应博客类型id的数量
module.exports.blogCountByBlogType = async function (categoryId) {
  return await blogModel.count({
    where: {
      categoryId,
    }
  })
}